﻿#ifndef TOOLWIDGET_H
#define TOOLWIDGET_H

#include <QWidget>
#include <QList>
#include <QVariant>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <vector>
#include <QSqlTableModel>
#include <QStylePainter>
#include <QStringView>
#include <QtDebug>
#include <QPair>
#include <QMessageBox>
#include "treedata.h"

namespace Ui {
class ToolWidget;
}

//软件右边工具类
class ToolWidget : public QWidget
{
    Q_OBJECT

public:
    explicit ToolWidget(Tree* treedata, QWidget *parent = nullptr);
    ~ToolWidget();
    int currentIndex();
    void setCurrentIndex(int index);
    void updateTheme(QColor newTheme, QColor oldTheme);
    void readValueFromData();
    void disableWomanChoice();
    void disableManChoice();
    void disableDel();
    void clearDTPage();
    void clearRSPage();
    void clearKWPage();
    void showReturnButton();
    void refreshState();
    void setRLSearchID(int id);

    //一些变量，用于保存按钮按下时的判断
    bool isAddingNew;
    bool isAddingChild;
    bool isAddingAncestry;
    //判断是否需要显示返回按钮
    bool isNeedReturn;    
    //数据的ID号
    int processID;

signals:
    void closeToolArea();//关闭工具区域的信号

    //用于显示区域的显示刷新的类型
    void addedAncestry();//添加祖先的信号
    void addedChild(int id);//添加孩子的信号
    void addedMate(int id);//添加伴侣的信号
    void updateValue(int id);//更新data的信号
    void deleteValue(int id);//删除数据的信号

    void fromKWSearchToDetail(int id);//从搜索页面到详情页面
    void retrunToPrevPage(int id);//返回到之前的页面

private slots:
    void saveButtonClicked();
    void keyWordKindChanged(QString text);
private:
    void init();
    void initConnections();
    void reletiveSearch();
    void addValueToData(int fatherID, int partnerID);
    void updateValueToData(int curID);
    void keyWordSearch();

    int prevPage;//之间页面的index，用于返回按钮

    Ui::ToolWidget *ui;
    Tree* tree;//家族树
    int RLSearchID;
};

#endif // TOOLWIDGET_H
